<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title>计算控件属性</title>
        <script type="text/javascript" src="../internal.js"></script>
        <script type="text/javascript" src="../../../jquery.js"></script>
        <script type="text/javascript" src="../../../bootstrap/bootstrap.js"></script>
        <link rel="stylesheet" href="../../../bootstrap/bootstrap.css">
        <link rel="stylesheet" href="../../../bootstrap/bootstrap-responsive.css">
        <style type="text/css">
            *{color: #838383;margin: 0;padding: 0}
            html,body {font-size: 12px;}
            body {
                padding-left: 20px;padding-right: 20px;
            }
        </style>
    </head>
    <body>
        <div id="tblwrap">
            <table class="table table-striped table-bordered" style="margin-top:18px;margin-bottom: 0;">
                <tr>
                    <th><span>控件名称</span> <span class="label label-important">*</span></th>
                    <th><span>计算精度</span> </th>
                </tr>
                <tr>
                    <td> <input id="itemName" type="text" placeholder="必填项" size="20" /> </td>
                    <td> <input id="itemPrec" type="text" value="4" size="10" /> <span class="help-inline">默认保留小数点后4位</span> </td>
                </tr>
                <tr>
                    <th colspan="2"><span>样式</span></th>
                </tr>
                <tr>
                    <td colspan="2">
                        <div class="controls">
                            <div class="input-prepend input-append">
                                <span class="add-on">字体大小</span><input id="itemSize" size="1" type="text"><span class="add-on">px</span>&nbsp;&nbsp;
                                <span class="add-on">宽</span><input id="itemWidth" size="1" type="text"><span class="add-on">px</span>&nbsp;&nbsp;
                                <span class="add-on">高</span><input id="itemHeight" size="1" type="text"><span class="add-on">px</span>
                            </div>
                        </div>
                    </td>
                </tr>
                <tr>
                    <th colspan="2">
                        <span>计算公式</span><span class="label label-important">*</span>
                        <span style="float:right">
                            <a class="btn" title="计算控件说明" onclick="fnShowGuide();"><i class="icon-question-sign"></i></a>
                        </span>
                    </th>
                </tr>
                <tr>
                    <td colspan="2">
                        <textarea id="itemValue" style="width: 440px;height: 60px;"></textarea>
                    </td>
                </tr>
            </table>
        </div>
        <div style="display:none;margin-bottom: 27px;">
            <div class="page-header">
                <h3>计算控件说明<span style="position: fixed;right: 20px;"><a title="回到控件属性页" onclick="fnShowGuide();" class="btn"><i class="icon-home"></i></a></span></h3>
            </div>
            <div>
                <blockquote>
                    <p>在日常的工作中，填写表单时，经常会存在一些计算项目，比如金额的计算，比如天数的计算，使用计算控件可以简化人员操作，提高准确性。 </p>
                    <p>以下举例说明计算控件的使用方法(以日历控件计算天数为例)：</p>
                </blockquote>
                <p>首先，先建立好需要参与计算的项目，如图建立好开始时间和结束时间这两个日历控件，当然了每个日历控件都有对应的输入框控件</p><br/><br/>
                <img src="helper/calc/calc1.jpg">
                <p>接下来点击计算控件按钮，新建一个计算控件，设定时需要输入计算公式，公式的规则就是四则运算规则，可以利用括号和加减乘除，公式的计算项目就是上面
					建立的单行输入框控件的名称，如图：</p><br/><br/>
                <img src="helper/calc/calc2.jpg" width="453px"><br/><br/>
                <p>上面日期差的实例实现的效果如图，而且<span  class="label label-important">计算控件的输入内容是不允许修改的。</span></p><br/><br/>
                <img src="helper/calc/calc3.jpg">
                <p>计算公式支持+ - * / ^和英文括号以及特定计算函数，例如：(数值1+数值2)*数值3-ABS(数值4)，其中数值1、数值2等为表单控件名称。 计算控件支持的函数计算如下： </p><br/><br/>
                <p>1、MAX(数值1,数值2,数值3...) 输出最大值,英文逗号分割； </p><br/><br/>
                <p>2、MIN(数值1,数值2,数值3...) 输出最小值,英文逗号分割； </p><br/><br/>
                <p>3、ABS(数值1) 输出绝对值；  </p><br/><br/>
                <p>4、AVG(数值1,数值2,数值3) 输出平均值； </p><br/><br/>
                <p>5、RMB(数值1) 输出人民币大写形式，数值范围0～9999999999.99； </p><br/><br/>
                <p>6、DAY(日期1-日期2) 输出时间差的整数天数； </p><br/><br/>
                <p>7、HOUR(日期1-日期2) 输出时间差的小时数； </p><br/><br/>
                <p>8、DATE(日期1-日期2) 输出时间差，形如：xx天xx小时xx分xx秒； </p><br/><br/>
                <p>9、LIST(列表控件名,第几列) 计算列表控件指定列的和；</p><br/><br/>
                <p>值得说明的是LIST函数，它可以读取列表控件某列数据的和，下面以实例说明一下： </p><br/><br/>
                <p>假如设计的列表控件如下图</p><br/><br/>
                <img src="helper/calc/calc4.jpg" width="453px"><br/><br/>
                <p>我们现在用计算控件将价格这一列的数据取出来，添加计算控件，公式书写如下：</p><br/><br/>
                <img src="helper/calc/calc5.jpg" width="453px"><br/><br/>
                <p>实现效果如下：</p><br/><br/>
                <p>LIST函数主要用于列表控件数据参与条件设置的情况。 </p><br/><br/>
                <span class="label label-important">注意：参与日期计算的控件必须为日期类型或者日期+时间类型。</span>
            </div>
        </div>
        <script type="text/javascript">
            var oNode = null;
            var oListText;
            window.onload = function() {
                //弹出窗口初始化函数，这里主要是判断是编辑下拉列表还是新增
                if( UE.plugins['calc'].editdom ){
                    oNode = UE.plugins['calc'].editdom;
                    $G('itemName').value = oNode.getAttribute('title');
                    $G('itemValue').value = oNode.getAttribute('value');
                    var sPrec = oNode.getAttribute('prec') ;
                    if( sPrec ) {
                        $G('itemPrec').value = sPrec;
                    }
                    var sFontSize = oNode.style.fontSize;
                    $G('itemSize').value = sFontSize.substr(0, sFontSize.length - 2);//这里的substr是为了去掉末尾的'px'
                    var sItemWidth = oNode.style.width;
                    $G('itemWidth').value = sItemWidth.substr(0, sItemWidth.length - 2);
                    var sItemHeight = oNode.style.height;
                    $G('itemHeight').value = sItemHeight.substr(0, sItemHeight.length - 2);
                }
            }
            function fnShowGuide(){
                $('#tblwrap').slideToggle().siblings().slideToggle();
            }
            dialog.oncancel = function () {
                if( UE.plugins['calc'].editdom ) {
                    delete UE.plugins['calc'].editdom;
                }
            };
            dialog.onok = function (){
                if( $G('itemName').value == '') {
                    alert('控件名称不能为空');
                    $('#itemName').focus();
                    return false;
                } else if( $G('itemValue').value == '' ) {
                    alert('请添加计算公式');
                    $('#itemValue').focus();
                    return false;
                }
                //检查公式
                if( $G('itemValue').value.indexOf("(")>=0 ) {
                    var nNum1 = $G('itemValue').value.split("(").length - 1;
                    var nNum2 = $G('itemValue').value.split(")").length - 1;
                    if( nNum1!=nNum2 ) {
                        alert("公式书写错误,请检查括号匹配！");
                        return false;
                    }
                }
                if( !oNode ) {
                    var sUrl =  parent.getItemUrl;
                    var nItemId = null;
                    ajax.request(sUrl, {timeout:60000,onsuccess:function (xhr) {
                            try {
                                nItemId = xhr.responseText;
                                oNode = document.createElement("input");
                                oNode.setAttribute('name', 'data_' + nItemId);
                                oNode.setAttribute('title', $G('itemName').value.replace("\"","&quot;") );
                                oNode.setAttribute('class', 'calc');
                                oNode.setAttribute('className', 'calc');
                                oNode.setAttribute('value',$.trim($G('itemValue').value));
                                oNode.setAttribute('prec',$G('itemPrec').value);
                                if( $G('itemSize').value!="" ) {
                                    oNode.style.fontSize = $G('itemSize').value + 'px';
                                }
                                if( $G('itemWidth').value!="" ) {
                                    oNode.style.width = $G('itemWidth').value + 'px';
                                }
                                if( $G('itemHeight').value!="" ) {
                                    oNode.style.height = $G('itemHeight').value + 'px';
                                }
                                editor.execCommand('insertHtml',oNode.outerHTML);
                                return true ;
                            } catch ( e ) {
                                alert ( '插入控件出错，请联系OA管理员解决 ');
                                return false;
                            }
                        },onerror:function() {
                            alert('Request TimeOut');
                        }});
                } else {
                    oNode.setAttribute('title', $G('itemName').value.replace("\"","&quot;") );
                    oNode.setAttribute('value',$.trim($G('itemValue').value));
                    oNode.setAttribute('prec',$G('itemPrec').value);
                    if( $G('itemSize').value!="" ){
                        oNode.style.fontSize = $G('itemSize').value + 'px';
                    }
                    if( $G('itemWidth').value!="" ){
                        oNode.style.width = $G('itemWidth').value + 'px';
                    }
                    if( $G('itemHeight').value!="" ){
                        oNode.style.height = $G('itemHeight').value + 'px';
                    }
                    delete UE.plugins['calc'].editdom; //使用后清空这个对象，变回新增模式
                }
            };
        </script>
    </body>
</html>
